// var iconv = require('iconv-lite');
var serialudp = function (callback,_port){
    var dgram = require('dgram');
    //创建 udp server
    var udp_server = dgram.createSocket('udp4');
    udp_server.bind(_port || 10101); // 绑定端口

    // 监听端口
    udp_server.on('listening', function () {
        console.log('udp server linstening.');
    })

    //接收消息
    udp_server.on('message', function (msg, rinfo) {
        // String.fromCharCode.apply(null, new Uint8Array(msg)); //汉字会乱码
        // var strmsg = iconv.decode(msg, 'gbk');
        callback && callback(msg, rinfo.address, rinfo.port);
    })
    //错误处理
    udp_server.on('error', function (err) {
        console.log('some error on udp server.');
        // udp_server.close();
    })
    return {
        //发送数据事件
        send: function(str,address,port,unit){
            if(unit=="hex"){
                str = str.replace(/-+|\s+/g, "");
            }
            var strmsg=Buffer.from(str, unit||"ASCII");
            udp_server.send(strmsg, 0, strmsg.length, port, address);

        },
        server:function () {
            return udp_server;
        }
    }
}